<?php
ob_start();
/**
* Sistema de segurança com acesso restrito
*
* Usado para restringir o acesso de certas páginas do seu site
*
* @author Thiago Belem <contato@thiagobelem.net>
* @link http://thiagobelem.net/
*
* @version 1.0
* @package SistemaSeguranca

/*
ESSA APLICAÇÃO FOI DESENVOLVIDA COMO SISTEMA DE GERENCIAMETO DE PRODUÇÃO DA UFCA
INICIO: 17/01/2014
AUTORES: THIAGO BESSA PONTES - thiago@bessapontes.com.br

STATUS DAS AÇÕES
0 - ação planejada
1 - ação confirmada
2 - ação negada
3 - ação validada
4 - ação confirmada e não validada


*/

//  Configurações do Script
// ==============================
$_SG['conectaServidor'] = true;    // Abre uma conexão com o servidor MySQL?
$_SG['abreSessao'] = true;         // Inicia a sessão com um session_start()?
$_SG['caseSensitive'] = false;     // Usar case-sensitive? Onde 'thiago' é diferente de 'THIAGO'
$_SG['validaSempre'] = true;       // Deseja validar o usuário e a senha a cada carregamento de página?
// Evita que, ao mudar os dados do usuário no banco de dado o mesmo contiue logado.

date_default_timezone_set('America/Fortaleza');//seta o timezone da aplicação
ini_set('default_charset','UTF-8');

		//LOCAL

$_SG['servidor'] = 'mysql.victimprofile.com';    // Servidor MySQL		
$_SG['usuario'] = 'victimprofile';          // Usuário MySQL
$_SG['senha'] = 'Fr3estyle';                // Senha MySQL
$_SG['banco'] = 'victimprofile';            // Banco de dados MySQL
//$_SG['site_url'] = 'http://localhost/dbti.com.br/'; //url do site



$_SG['paginaLogin'] = 'index.php'; // Página de login Padrão
$_SG['paginaLoginOFF'] = 'index.php'; // Página de login quando o a ssesão foi destuida


/* ALIAS PARA AS TABELAS DO BANCO */
$_SG['TabUsuario'] = 'usuario'; // nome da tabela onde os usuários são salvos
$_SG['TabEmpresa'] = 'empresa'; // nome da tabela onde as Empresas estão salvos
$_SG['TabResponsavel'] = 'responsavel'; //nome da tabela onde os Responsaveis pelas empresa estão salvos
$_SG['TabQuestoes'] = 'questoes';	// nome da tabela onde as questoes serão salvos apos a cadastro
$_SG['TabNiveis'] = 'niveis';	// nome da tabela onde os niveis das alternativas serão salvos
$_SG['TabAlternativas'] = 'alternativas'; //	nome da tabela onde as alternativas das questões estão salvos


//require_once('functions.php');

// ==============================

// ======================================
//   ~ Não edite a partir deste ponto ~
// ======================================

// Verifica se precisa fazer a conexão com o MySQL
if ($_SG['conectaServidor'] == true) {
$_SG['link'] = @mysql_connect($_SG['servidor'], $_SG['usuario'], $_SG['senha']) or die("MySQL: Não foi possível conectar-se ao servidor [".$_SG['servidor']."].");
mysql_select_db($_SG['banco'], $_SG['link']) or die("MySQL: Não foi possível conectar-se ao banco de dados.");
}

// Verifica se precisa iniciar a sessão
if ($_SG['abreSessao'] == true) {
	session_start();
}

/**
* Função que valida um usuário e senha
*
* @param string $usuario - O usuário a ser validado
* @param string $senha - A senha a ser validada
*
* @return bool - Se o usuário foi validado ou não (true/false)
*/


function validaUsuario($login, $senha) {
global $_SG;
$cS = ($_SG['caseSensitive']) ? 'BINARY' : '';

$senhaDeCod = base64_encode($senha);

// Usa a função addslashes para escapar as aspas
$nusuario = addslashes($login);
$nsenha = addslashes($senhaDeCod);

// Monta uma consulta SQL (query) para procurar um usuário
// status 1(um) é pq está ativo
$sql = "SELECT `CodUsuario`, `nomeUsuario`, `tipo`, `status` FROM `".$_SG['TabUsuario']."` 
		WHERE ".$cS." `login` = '".$nusuario."' AND ".$cS." `senha` = '".$nsenha."' AND ".$cS." `status` = '1' 
		LIMIT 1";

$query = mysql_query($sql) or die(mysql_error());
$resultado = mysql_fetch_assoc($query);
// Verifica se encontrou algum registro
if (empty($resultado)) {
// Nenhum registro foi encontrado => o usuário é inválido
return false;

} else {
// O registro foi encontrado => o usuário é valido

// Definimos dois valores na sessão com os dados do usuário
$_SESSION['usuarioID'] = $resultado['CodUsuario']; // Pega o valor da coluna 'id do registro encontrado no MySQL
$_SESSION['usuarioNome'] = $resultado['nomeUsuario']; // Pega o valor da coluna 'nome' do registro encontrado no MySQL
$_SESSION['usuarioTipo'] = $resultado['tipo']; // Pega o valor da coluna 'tipo' do registro encontrado no MySQL

// Verifica a opção se sempre validar o login
	if ($_SG['validaSempre'] == true) {
	// Definimos dois valores na sessão com os dados do login
	$_SESSION['usuarioLogin'] = $login;
	$_SESSION['usuarioSenha'] = $senhaDeCod;
	$_SESSION['usuarioTipo'] = $resultado['tipo'];
	}
	return true;
}


}


/**
* Função que protege uma página
*/
function protegePagina() {
	global $_SG;
	if(
		!isset($_SESSION['usuarioID']) OR 
		!isset($_SESSION['usuarioNome'])
	){
		// Não há usuário logado, manda pra página de login
		expulsaVisitante();
	}else{
		// Há usuário logado, verifica se precisa validar o login novamente
		if ($_SG['validaSempre'] == true) {
			// Verifica se os dados salvos na sessão batem com os dados do banco de dados
			if (!validaUsuario($_SESSION['usuarioLogin'], base64_decode($_SESSION['usuarioSenha']))) {
			// Os dados não batem, manda pra tela de login
			expulsaVisitante();
			}
		}
	}
}

/**
* Função para expulsar um visitante
*/
function expulsaVisitante() {
global $_SG;

// Remove as variáveis da sessão (caso elas existam)
unset($_SESSION['usuarioID'], $_SESSION['usuarioNome'], $_SESSION['usuarioLogin'], $_SESSION['usuarioSenha']);

// Manda pra tela de login
header("Location: ".$_SG['paginaLoginOFF']);
}

/**
* Função para DTI Gestor errada
*/
function acessoUsuariorErro() {
global $_SG;

// Remove as variáveis da sessão (caso elas existam)
unset($_SESSION['usuarioID'], $_SESSION['usuarioNome'], $_SESSION['usuarioLogin'], $_SESSION['usuarioSenha']);

// Manda pra tela de login
header("Location: index.php?pagina=loginERRO");
}


/**
* Função para Nivel de Acesso do cliente
*/
function nivelUsuario() {
global $_SG;
//Faz a consulta para verificar o status do usuario com a sessão criada
$testeNivel = mysql_query("Select CodUsuario, tipo, senha From `".$_SG['TabUsuario']."` where id_cliente = " . $_SESSION['usuarioID'])
			   or die(mysql_error());

//Recupera o resultado do select
$resultado = mysql_fetch_assoc($testeNivel);

//Faz a condição de nível de acesso ao usuário
if($resultado['nivel'] == "0")
	{
?>	
    <div id="corpo">
		<div id="logado">
			<h3 class="erro">SEM PERMISÃO DE ACESSO A ESSA PÁGINA</h3>
            <ol class="busca">
            	<li>Entre em contato com o administrador do sistema</li>
            </ol>
		</div>       
	</div>	

<?php    
		exit;
	}
}